package com.example.component;

import com.example.vo.PayInfoVO;
import org.springframework.stereotype.Component;

/**
 * @author yinxin
 * @version 1.0
 * @Description:
 * @date 2022/6/2015:40
 */
public class PayStrategyContext {

   private PayStrategy payStrategy;

   public PayStrategyContext(PayStrategy payStrategy) {
      this.payStrategy = payStrategy;
   }

   /**
    * 根据策略对象执行不同的下单接口
    * @return
    */
   public String executeUnifiedOrder(PayInfoVO payInfoVO){
      return payStrategy.unifieOrder(payInfoVO);
   }

   /**
    * 根据策略对象执行不同的退款接口
    * @return
    */
   public String executeRefund(PayInfoVO payInfoVO){
      return payStrategy.unifieOrder(payInfoVO);
   }

   /**
    * 根据策略对象执行不同的查询支付状态接口
    * @return
    */
   public String executeQueryPayStatus(PayInfoVO payInfoVO){
      return payStrategy.queryPayStatus(payInfoVO);
   }

   /**
    * 根据策略对象执行不同的订单关闭接口
    * @return
    */
   public String executeCloseOrder(PayInfoVO payInfoVO){
      return payStrategy.closeOrder(payInfoVO);
   }

}
